async function* range(start, end) {
    for (let i = start; i <= end; i++) {
        yield Promise.resolve(i);
    }
}

(async () => {
    const gen = range(1, 3); //? 传过去相当于变成了三个yield 返回过来一个async object promise数组
    console.log(gen) //? Object [AsyncGenerator] {}
    //? for await...of 是用于遍历异步可迭代对象
    for await (const item of gen) {
        console.log(item);
    }
})();
/*
? 1
? 2
? 3
? 我们给 函数 range 传递： Promise{1}, Promise{2}, Promise{3}，Generator 函数 range 返回一个全是 async object promise 数组。
? 我们将 async object 赋值给变量 gen，之后我们使用for await ... of 进行循环遍历。
? 我们将返回的 Promise 实例赋值给 item： 第一个返回 Promise{1}， 第二个返回 Promise{2}，之后是 Promise{3}。
? 因为我们正 awaiting item 的值，resolved 状态的 promise，promise 数组的 resolved 值 以此为： 1，2，3.
 */
